package com.dci.result;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * All rights Reserved, Designed By 姑苏区政府大数据中心
 *
 * @version V1.0
 * @Title: null.java
 * @Package com.dci.result
 * @Description: 查询成功返回值
 * @author: 张星亮
 * @date: 2019/2/25
 * @Copyright: 2019 姑苏区政府大数据中心. All rights reserved.
 * 注意：本内容仅限于姑苏区政府大数据中心内部传阅，禁止外泄以及用于其他的商业目
 */

@Data
public class JsonData {
    // 失败
    public static final int TYPE_RESULT_FAIL = 0;
    // 成功
    public static final int TYPE_RESULT_SUCCESS = 1;
    // 警告
    public static final int TYPE_RESULT_WARN = 2;
    // 提示信息
    public static final int TYPE_RESULT_INFO = 3;

    /**
     * 消息提示类型
     */
    private int type;

    /**
     * 提示代码
     */
    private int messageCode;

    /**
     * 数据
     */
    private Object data;

    /**
     * 数据
     */
    private String des;

    /**
     * 数据
     */
    private String userId;

    public JsonData(int type) {
        this.type = type;
    }

    public static JsonData success(Object object, int msg) {
        JsonData jsonData = new JsonData(TYPE_RESULT_SUCCESS);
        jsonData.data = object;
        jsonData.messageCode = msg;
        return jsonData;
    }

    public static JsonData success(Object object) {
        JsonData jsonData = new JsonData(TYPE_RESULT_SUCCESS);
        jsonData.data = object;
        jsonData.messageCode = 200;
        return jsonData;
    }

    public static JsonData success(Object object,String des) {
        JsonData jsonData = new JsonData(TYPE_RESULT_SUCCESS);
        jsonData.data = object;
        jsonData.des = des;
        jsonData.messageCode = 200;
        return jsonData;
    }

    public static JsonData success() {
        return new JsonData(TYPE_RESULT_SUCCESS);
    }

    public static JsonData fail(int msg) {
        JsonData jsonData = new JsonData(TYPE_RESULT_FAIL);
        jsonData.messageCode = msg;
        return jsonData;
    }

    public Map<String, Object> toMap() {
        HashMap<String, Object> result = new HashMap<String, Object>();
        result.put("type", type);
        result.put("messageCode", messageCode);
        result.put("data", data);
        return result;
    }
}
